﻿using System;
namespace IFramework
{
    public interface IPool
    {
        Type PoolType { get; }
        int IdelCapcity { get; }
        T GetPoolObj<T>(object PoolObjParent, params object[] paras) where T : IPoolObj, new();
        T GetInitObj<T>(T prefab, object PoolObjParent, params object[] paras) where T : UnityEngine.Object, IPoolObj;

        void Restore(IPoolObj poolObj, params object[] paras);
        void RestoreAll(params object[] paras);
        void Restore(IPoolObj[] poolObjs, params object[] paras);
        void AutoClean(bool isHalf, params object[] paras);
        void Clean(params object[] paras);
        void Clean(IPoolObj poolObj, params object[] paras);
        void Clean(IPoolObj[] poolObjs, params object[] paras);
    }
}